/**
 * Created by jiachenpan on 16/11/18.
 */

/*不为空校验*/
export function validEmpty(str) {
    const reg = /\S/
    return reg.test(str)
}

export function isvalidUsername(str) {
    // const valid_map = ['admin', 'editor', 'test1', 'test2', 'test3']
    // return valid_map.indexOf(str.trim()) >= 0
    return true
}

/* 合法uri*/
export function validateURL(rule, value, callback) {
    // const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
    // return urlregex.test(textval)
    if (value) {
        if (!/^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/.test(value)) {
            callback(new Error('请输入合法的地址!'))
        } else {
            callback();
        }
    } else {
        callback();
    }
}

/* 小写字母*/
export function validateLowerCase(str) {
    const reg = /^[a-z]+$/
    return reg.test(str)
}

/* 大写字母*/
export function validateUpperCase(str) {
    const reg = /^[A-Z]+$/
    return reg.test(str)
}

/* 大小写字母*/
export function validatAlphabets(str) {
    const reg = /^[A-Za-z]+$/
    return reg.test(str)
}

/* 数字*/
export function validateNumber(num) {
    const reg = /^[0-9]*$/
    return reg.test(num)
}


/**
 * validate email
 * @param email
 * @returns {boolean}
 */
export function validateEmail(email) {
    const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
    return re.test(email)
}

// 注册手机号验证
export function phoneRegeFun(phone) {
    // const phoneRege = /^(((13|14|15|18|17)\d{9}))$/;
    const phoneRege = /^(1[3|4|5|6|7|8|9])\d{9}$|^0\d{2,3}-?\d{7,8}$/;

    
    return phoneRege.test(phone)
}

// 注册密码验证
export function paswordRegeFun(val) {
    const paswordRege = /^(?=.*?[a-z)(?=.*>[A-Z])(?=.*?[0-9])[a-zA_Z0-9]{6,8}$/
    return paswordRege.test(val)
}

/*----------------校验方法--------------------------*/

export function checkMail(rule, value, callback) {
    if (!validateEmail(value)) {
        callback(new Error('请输入有效的邮箱'));
    } else {
        callback();
    }
};

export function checkPhone(rule, value, callback) {
    if (!phoneRegeFun(value)) {
        callback(new Error('请输入有效的手机号'));
    } else {
        callback();
    }
};

export function checkData(rule, value, callback) {
    if (value) {
        if (!/^[a-zA-z]\w{4,16}$/.test(value)) {
            callback(new Error('大小写字母、数字组成，第一位必须为字母，并且必须由字母和数字混合组成,长度4-16位'));
        } else {
            callback();
        }
    } else {
        callback();
    }
}
export function checkPassword(rule, value, callback) {
    if (value) {
        if (!/^[a-zA-Z]\w{6,18}$/.test(value)) {
            callback(new Error('大小写字母、数字组成，第一位必须为字母，并且必须由字母和数字混合组成,长度6-18位'));
        } else {
            callback();
        }
    } else {
        callback();
    }
}
// 合法ip校验
export function validcodeip(rule, value, callback) {
    if (value) {
        if (!/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/.test(value)) {
            callback(new Error('IP地址不是合法的IP地址'))
        } else {
            callback();
        }
    } else {
        callback();
    }

};
// NFS共享目录:
export function catalogue(rule, value, callback) {
    if (value) {
        if (!/^(\/(\w+\/?)*$)$/.test(value)) {
            callback(new Error("请输入正确的目录，以'/'开头"))
        } else {
            callback();
        }
    } else {
        callback();
    }

};
// NFS共享目录:
export function ftpParot(rule, value, callback) {
    if (value) {
        if (!/^[1-9]\d*|0$/.test(value) && port * 1 >= 0 && value * 1 <= 65535) {
            callback(new Error('FTP端口号不是合法的端口'))
        } else {
            callback();
        }
    } else {
        callback();
    }

};
// 校验特殊字符
export function checkSpecialKey(str) {
    let specialKey = "[`~!@#$%^&*+=|{}':;',\\[\\].<>/?~！@#￥%……&×＆……％￥＃@！～）（＋*（）+|{}【】‘；：”“’。，、？]";
    for (let i = 0; i < str.length; i++) {
        if (specialKey.indexOf(str.substr(i, 1)) != -1) {
            return false;
        }
    }
    return true;
};